"use strict";

function demoLogic() {
    console.log("\nmathDemoLogic");

    // 加减乘除
    const x = Math.PI;
    const y = Math.E;
    console.log("PI + 自然常数E=" + (x + y));
    console.log("PI - 自然常数E=" + (x - y));
    console.log("PI * 自然常数E=" + (x * y));
    console.log("PI / 自然常数E=" + (x / y));

    // 平方开方
    console.log("PI 平方=" + (x * x));
    console.log("PI 平方根=" + Math.sqrt(x));

    // 向下取整，向上取整，4舍5入，强转为int(效果为向下取整)
    console.log("PI 向上取整=" + Math.ceil(x));
    console.log("PI 向下取整=" + Math.floor(x));
    console.log("PI 4舍5入=" + Math.round(x));
    console.log("PI 强转为int(效果为向下取整)=" + parseInt(x));
    console.log("自然常数E 强转为int(效果为向下取整)=" + parseInt(y));

    // 三角函数 反三角函数
    const r2a = 57.29577951308232; // 弧度转角度 比例参数
    const a2r = 0.017453292519943295; // 角度转弧度 比例参数
    console.log("自然常数E作为角度(弧度), 转为360角度 = " + y * r2a);
    console.log("自然常数E作为角度(弧度), 正弦 = " + Math.sin(y));
    console.log("自然常数E作为角度(弧度), 余弦 = " + Math.cos(y));
    console.log("自然常数E作为角度(弧度), 正切 = " + Math.tan(y));
    console.log("自然常数E作为角度(弧度), 余切(正切倒数) = " + 1.0 / Math.tan(y));
    console.log("自然常数E作为角度(弧度), 正割(余弦倒数) = " + 1.0 / Math.cos(y));
    console.log("自然常数E作为角度(弧度), 余割(正弦倒数) = " + 1.0 / Math.sin(y));
    const s5 = 1.0 / Math.sqrt(5);
    console.log("根号5分之1 反正弦(定义域 [-1,1], 值域[-pi/2,pi/2])= " + Math.asin(s5));
    console.log("根号5分之2 反余弦(定义域 [-1,1], 值域[0,pi])= " + Math.acos(2 * s5));
    console.log("0.5 反正切(值域[0,pi])= " + Math.atan(0.5));

    // 指数函数 对数函数
    console.log("E 的 3次方=" + Math.pow(y, 3) + ", 用exp函数 = " + Math.exp(3));
    console.log("E 的 PI次方=" + Math.pow(y, x) + ", 用exp函数 = " + Math.exp(x));
    console.log("E 的 4次方=" + Math.pow(y, 4) + ", 用exp函数 = " + Math.exp(4));
    console.log("E为底, E的PI次方的对数(如果没有精度损失应该等于PI) = " + Math.log(Math.exp(x)));
    console.log("10为底, E的PI次方的对数 = " + Math.log10(Math.exp(x)));
    console.log("2为底, E的PI次方的对数 = " + Math.log(Math.exp(x)) / Math.log(2.0)); // log2N=logeN/loge2,logeN代表以e为底的N的对数,loge2代表以e为底的2的对数

    // 向量 矩阵
    // 虚数
    // 大数（超过64位）
}

export { demoLogic };